package net.flintx.array;

/**
 * Created by flintx on 2018/1/4.
 */
public class RemoveElement {
    public int removeElement(int[] nums, int val) {
        /** 
         * removeElement
         *
         * @Description:
         *  Given an array and a value, remove all instances of that value in-place and return the new length.
         *  Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
         *  The order of elements can be changed. It doesn't matter what you leave beyond the new length.
         * @Example:
         *  Given nums = [3,2,2,3], val = 3,
         *  Your function should return length = 2, with the first two elements of nums being 2.
         * @Params: [nums, val] 
         * @Return: int 
         * @Date: 2018/1/4 
         */
        int i = 0;
        for (int num : nums) {
            if (num != val) {
                nums[i++] = num;
            }
        }
        return i;

    }

    public static void main(String[] args) {
        int[] nums = {3, 2, 2, 3};
        int val = 3;
        System.out.println(new RemoveElement().removeElement(nums, val));
    }
}
